package com.zym.pss.cargo.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.zym.pss.baseinfo.po.Material;
import com.zym.pss.baseinfo.po.Repository;
import com.zym.pss.baseinfo.service.MaterialService;
import com.zym.pss.baseinfo.service.RepositoryService;
import com.zym.pss.cargo.po.MaterialOut;
import com.zym.pss.cargo.po.Stock;
import com.zym.pss.cargo.service.MaterialOutService;
import com.zym.pss.cargo.service.StockService;
import com.zym.pss.core.controller.BaseController;
import com.zym.pss.core.pargination.Page;
import com.zym.pss.sysadmin.po.User;
import com.zym.pss.sysadmin.vo.UserVo;
import com.zym.pss.util.UtilFuns;
@Controller
@RequestMapping("/cargo/materialout")
public class MaterialOutController extends BaseController {
@Resource
MaterialOutService materialOutService ; //原材料出库Service
@Resource
MaterialService materialService ; //原材料Service
@Resource
StockService stockService ; //库存Service
@Resource
RepositoryService repositoryService ; //仓库Service
//存放列表信息
private List<MaterialOut> dataList ;
/**
* 跳转到列表页面
*/
@RequestMapping("/list.action")
public String list(Model model,Integer pageNo,HttpSession session ){
//获取租户信息
UserVo curuser = (UserVo) session.getAttribute("CURUSER");
/*Map<String,Object> paraMap = new HashMap<String,Object>();
paraMap.put("state", 0); //查询 没有上报的出库单表
prarMap.put("tenantId",curuser.getTenantId());
dataList = materialOutService.find(paraMap);*/
// dataList = materialOutService.find(null);
//------------------------------------分页操作----------------------------------------
Page<MaterialOut> page = new Page<MaterialOut>();
if(pageNo != null){
page.setPageNo(pageNo); //获取页面传递过来的页号
}
page.setTenantId(curuser.getTenantId()); //设置租户号
dataList = materialOutService.findPage(page);
model.addAttribute("pageLinks", page.pageLinks("list.action")); //返回翻页的的HTML语句
//------------------------------------------------------------------------------------
model.addAttribute("dataList",dataList);
return "/cargo/materialout/jMaterialOutList.jsp" ;
}
@RequestMapping("/toview.action")
public String toview(String id , Model model){
MaterialOut obj = this.materialOutService.get(id);
model.addAttribute("obj",obj);
return "/cargo/materialout/jMaterialOutView.jsp";
}
/**
* 跳到添加页面
*/
@RequestMapping("/tocreate.action")
public String tocreate(Model model,HttpSession session ){
//获取租户信息
UserVo curuser = (UserVo) session.getAttribute("CURUSER");
Map<String,Object> tenantIdMap = new HashMap<String,Object>();
tenantIdMap.put("tenantId", curuser.getTenantId());
//准备原材料下拉列表
List<Material> materialList = this.materialService.find(tenantIdMap);
// 准备原材料仓库下拉列表
Map<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put("type", "1");
paraMap.put("tenantId", curuser.getTenantId());
List<Repository> repositoryList = this.repositoryService.find(paraMap);
model.addAttribute("materialList",materialList);
model.addAttribute("repositoryList",repositoryList);
return "/cargo/materialout/jMaterialOutCreate.jsp";
}
/**
* 添加
*/
@RequestMapping("/insert.action")
public String create(MaterialOut materialOut,HttpSession session ){
//获取租户信息
UserVo curuser = (UserVo) session.getAttribute("CURUSER");
String tenantId = curuser.getTenantId() ;
materialOut.setTenantId(tenantId);
this.materialOutService.insert(materialOut);
return "redirect:/cargo/materialout/list.action";
}
/**
* 跳到更新页面
*/
@RequestMapping("/toupdate.action")
public String toupdate(String id,Model model,HttpSession session){
MaterialOut obj = this.materialOutService.get(id);
if(obj.getState() == 0 ){
model.addAttribute("obj",obj);
//获取租户信息
User curuser = (User) session.getAttribute("CURUSER");
Map<String,Object> tenantIdMap = new HashMap<String,Object>();
tenantIdMap.put("tenantId", curuser.getTenantId());
//准备原材料下拉列表
List<Material> materialList = this.materialService.find(tenantIdMap);
// 准备原材料仓库下拉列表
Map<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put("type", "1");
paraMap.put("tenantId", curuser.getTenantId());
List<Repository> repositoryList = this.repositoryService.find(paraMap);
model.addAttribute("materialList",materialList);
model.addAttribute("repositoryList",repositoryList);
return "/cargo/materialout/jMaterialOutUpdate.jsp";
}else{
return "redirect:/cargo/materialout/list.action";
}
}
/**
* 更新
*/
@RequestMapping("/update.action")
public String update(MaterialOut MaterialOut){
this.materialOutService.update(MaterialOut);
return "redirect:/cargo/materialout/list.action";
}
/**
* 删除
*/
@RequestMapping("/deleteById.action")
public String deleteById(String id){
this.materialOutService.deleteById(id);
return "redirect:/cargo/materialout/list.action";
}
/**
* 批量删除
*/
@RequestMapping("/delete.action")
public String delete(@RequestParam("id")String[] ids){
for(int i = 0;i<ids.length;i++){
MaterialOut mo = materialOutService.get(ids[i]);
if(mo.getState()==0){
this.materialOutService.delete(new String[]{ids[i]});
}
}
return "redirect:/cargo/materialout/list.action";
}
/**
* 上报订单
* @param id
* @return
*/
@RequestMapping("/start.action")
public String start(@RequestParam("id")String[] ids,Model model,HttpSession session ){
//获取租户信息
UserVo curuser = (UserVo) session.getAttribute("CURUSER");
//库存操作结果信息
String msg = "" ;
//原材料出库操作:减少库存量
for(int i = 0 ; i<ids.length;i++){
MaterialOut m = materialOutService.get(ids[i]); //获取原材料入库单
if(m.getState() == 0 ){ //当状态为 未登记状态时 进行 操作
Stock st = stockService.findByGoodNo(m.getMaterialNo(),m.getRepositoryNo() , curuser.getTenantId()); //通过货物编号,查询库存记录
//如果库存中没有记录,添加库存
if(UtilFuns.isNotEmpty(st)){
if(st.getAmount() < m.getMaterialAmount()){
msg = "%>_<% 库存不足!";
}else{
stockService.updateStockAmount(m.getMaterialNo(),m.getRepositoryNo(),st.getAmount()-m.getMaterialAmount(),curuser.getTenantId());
msg = "O(∩_∩)O~~ 库存记录已修改!!";
//更新出库单状态
this.materialOutService.updateState(new String[]{ids[i]},1);
}
}else{ //如果库存中有记录,更新库存量
msg = "%>_<% 无库存记录!!";
}
}else{
msg = "%>_<% 该出库单已被登记过!! 请认真核实~~" ;
}
}
//返回到结果页面
model.addAttribute("msg", msg);
model.addAttribute("listUrl", "list.action");
return "/exception/error.jsp";
}
/**
* 取消订单
* @param ids
* @return
*/
@RequestMapping("/cancel.action")
public String cancel(@RequestParam("id")String[] ids){
this.materialOutService.updateState(ids,0);
return "redirect:/cargo/materialout/list.action";
}
}